#include <stdio.h>   // 包含标准输入输出函数库
#include <math.h>    // 包含数学函数库，用于sqrt()函数

/**
 * 函数名称：is_prime
 * 函数功能：判断一个整数是否为素数
 * 素数定义：大于1的自然数，除了1和它本身外，不能被其他自然数整除
 * 参数：num - 待判断的整数
 * 返回值：1 - 是素数；0 - 不是素数
 */
int is_prime(int num) {
    // 小于2的数一定不是素数（素数最小是2）
    if (num < 2) {
        return 0;
    }
    
    // 检查从2到num平方根之间的所有数是否能整除num
    // 优化逻辑：如果num有一个大于其平方根的因数，那么它必定有一个小于其平方根的对应因数
    for (int i = 2; i <= sqrt(num); i++) {
        // 若能被i整除，则不是素数
        if (num % i == 0) {
            return 0;
        }
    }
    
    // 遍历结束后未找到能整除的数，说明是素数
    return 1;
}

/**
 * 主函数：程序入口点
 * 功能：接收用户输入的偶数，验证哥德巴赫猜想，输出两个素数之和的形式
 * 输入：一系列大于2的偶数，输入0时程序结束
 * 输出：每个偶数表示为两个素数之和的形式
 */
int main() {
    int n;  // 用于存储用户输入的整数
    
    // 无限循环，持续处理用户输入，直到输入0退出
    while (1) {
        // 读取用户输入的整数
        scanf("%d", &n);
        
        // 若输入0，则退出循环，程序结束
        if (n == 0) {
            break;
        }
        
        int found = 0;  // 标记是否找到符合条件的素数对，0表示未找到，1表示找到
        
        // 寻找素数对(a, b)，使得a + b = n，且a <= b（保证差值最大）
        // 从3开始遍历（最小的奇素数），步长为2（只检查奇数，因为偶数除了2都不是素数）
        // a的范围限制在n/2以内，确保a <= b（因为b = n - a）
        for (int a = 3; a <= n / 2; a += 2) {
            int b = n - a;  // 计算另一个数b
            
            // 检查a和b是否都是素数
            if (is_prime(a) && is_prime(b)) {
                // 输出结果：n = a + b
                printf("%d = %d + %d\n", n, a, b);
                found = 1;    // 标记为已找到
                break;        // 找到第一组就退出循环，保证a最小、b最大，即差值最大
            }
        }
        
        // 如果未找到符合条件的素数对（理论上对于大于2的偶数不会发生）
        if (!found) {
            printf("Goldbach's conjecture is wrong\n");
        }
    }
    
    return 0;  // 程序正常结束
}